package com.yida.gwj.vote.outside.service;

import com.yida.gwj.vote.outside.domain.GwjVoteHouse;
import com.yida.gwj.vote.outside.domain.GwjVoteResultDetail;
import com.yida.gwj.vote.outside.domain.dto.GwjEVoteResultDetailListDTO;
import com.yida.gwj.vote.outside.domain.dto.GwjGVoteResultDetailListDTO;
import com.yida.gwj.vote.outside.domain.request.GwjVoteResultDetailQueryRequest;

import java.util.List;

/**
 * 投票结果详情Service接口
 *
 * @author lqq
 * @date 2023-03-22
 */
public interface IGwjVoteResultDetailService {

	/**
	 * 查询投票结果详情
	 *
	 * @param detailId 投票结果详情主键
	 * @return 投票结果详情
	 */
	public GwjVoteResultDetail selectVoteResultDetailByDetailId(Long detailId);

	/**
	 * 查询投票结果详情列表
	 *
	 * @param voteResultDetail 投票结果详情
	 * @return 投票结果详情集合
	 */
	public List<GwjVoteResultDetail> selectVoteResultDetailList(GwjVoteResultDetail voteResultDetail);

	/**
	 * 新增投票结果详情
	 *
	 * @param voteResultDetail 投票结果详情
	 * @return 结果
	 */
	public int insertVoteResultDetail(GwjVoteResultDetail voteResultDetail);

	/**
	 * 修改投票结果详情
	 *
	 * @param voteResultDetail 投票结果详情
	 * @return 结果
	 */
	public int updateVoteResultDetail(GwjVoteResultDetail voteResultDetail);

	/**
	 * 批量删除投票结果详情
	 *
	 * @param detailIds 需要删除的投票结果详情主键集合
	 * @return 结果
	 */
	public int deleteVoteResultDetailByDetailIds(Long[] detailIds);

	/**
	 * 删除投票结果详情信息
	 *
	 * @param detailId 投票结果详情主键
	 * @return 结果
	 */
	public int deleteVoteResultDetailByDetailId(Long detailId);

	/**
	 * 新增投票结果详情
	 *
	 * @param voteResultDetails 投票结果详情
	 * @return 结果
	 */
	int insertBatchVoteResultDetail(List<GwjVoteResultDetail> voteResultDetails);

	/**
	 * 删除投票结果详情信息
	 *
	 * @param resultId 投票结果主键
	 * @return 结果
	 */
	int deleteVoteResultDetailByResultId(Long resultId);

	/**
	 * 查询电子投票结果详情列表
	 *
	 * @param request 请求参数
	 * @return /
	 */
	List<GwjEVoteResultDetailListDTO> selectEVoteResultDetailDTOList(GwjVoteResultDetailQueryRequest request);

	/**
	 * 查询公维金投票结果详情列表
	 *
	 * @param request 请求参数
	 * @return /
	 */
	List<GwjGVoteResultDetailListDTO> selectGVoteResultDetailDTOList(GwjVoteResultDetailQueryRequest request);

	/**
	 * 根据投票id统计投票人数
	 *
	 * @param voteId 投票ID
	 * @return 结果
	 */
	int countVoteOwnerByVoteId(Long voteId);

	/**
	 * 根据投票id统计投票同意人数
	 *
	 * @param voteId 投票ID
	 * @return 结果
	 */
	int countAgreeVoteOwnerByVoteId(Long voteId);

	/**
	 * 查询投票结果详情的房屋信息
	 *
	 * @param voteId 投票ID
	 * @return 投票结果详情集合
	 */
	List<GwjVoteHouse> selectVoteResultHouseListByVoteId(Long voteId);

	/**
	 * 查询投票结果详情的房屋信息
	 *
	 * @param voteResultDetail 投票详情
	 * @return 投票结果详情集合
	 */
	List<GwjVoteHouse> selectVoteResultHouseList(GwjVoteResultDetail voteResultDetail);

	/**
	 * 根据投票选项统计投票结果详情
	 *
	 * @param optionId 投票选项ID
	 * @return 结果
	 */
	int countVoteResultDetailByOptionId(String optionId);

}
